package com.oa.dao;

import com.oa.common.base.Page;
import com.oa.common.base.Pageable;
import com.oa.entities.User;

public interface UserDao extends BaseDao<Long,User> {

    /**
     * 根据用户名查询用户
     *
     * @param username
     * 用户名
     *
     * @return
     */
    User findByUsername(String username);

    /**
     * 根据用户的关键字分页查询用户
     *
     * @param pageable
     * 分页的组件
     *
     * @param key
     * 关键字
     *
     * @return
     */
    Page<User> findPage(Pageable pageable,String key);


    Boolean validateByDepartment(Long departmentId);

    Boolean validateByRole(Long roleId);

    /**
     * 校验用户是否存在
     *
     * @param username
     * 用户名
     *
     * @param id
     * 用户的id
     *
     * @return
     */
    Boolean validateUsername(String username,Long id);

    /**
     * 校验用户的电话
     *
     * @param phone
     * 手机号码
     *
     * @param id
     * 用户的id
     * @return
     */
    Boolean validatePhone(String phone, Long id);

    /**
     * 校验电子邮件是否存在
     *
     * @param email
     * 电子邮件
     *
     * @param id
     * 用户的id
     * @return
     */
    Boolean validateEmail(String email, Long id);
}
